A process is a running instance of at least a portion of a computer program. Typically, a given computing device runs a number of processes at any given time. To ensure that the processes are executed with a desired performance, there may be a cluster, or group, of computing devices, or portions of computing devices. The individual computing devices or computing device portions are referred to as nodes. Some processes may have executing instances on more than one node, whereas other processes may be constrained to have just one executing instance in a given group or cluster, and therefore may be running on just one node in the group of cluster in question. These latter processes are referred to as singleton processes, because they are executed on just a single node.
Occasionally a process, particularly a singleton process, may have to be moved from its current node to a new node within the cluster or group of nodes. For example, the current node on which the process has been executing may have failed, necessitating that the process be moved to a new node. As another example, nodes may be added to the cluster or group, such as when the nodes come back online after having failed or otherwise after having been taken offline. In this case, one or more processes may be moved to the added nodes. The movement of processes among the nodes of a cluster or group is referred to as load balancing.